package main

import "reflect"

// CreateReturnPtr 创建结构体并返回值
func CreateReturnVal(name string, age int) interface{} {
	// 获取Person类型的反射类型对象
	personType := reflect.TypeOf(Person{})

	// 使用New创建一个指向Person类型的零值的指针
	pVal := reflect.New(personType) // 这里使用personPtrType.Elem()是因为我们实际上需要的是指向Person类型的指针的指针，但因为我们用的是PtrTo，所以这里实际上是多余的。修正为：personPtr := reflect.New(personType)
	//获取真实的结构体值
	tValue := pVal.Elem()

	// 通过反射值设置字段值
	tValue.FieldByName("Name").SetString(name)
	tValue.FieldByName("Age").SetInt(int64(age))
	// 返回指向Person的指针的接口{}类型（实际上是*Person）
	return tValue.Interface()
}

func ReflectOnStruct() {

}
